Unite2016に行ってきたぽ


概要

今年は平和に過ごす。

Unite 2016

http://japan.unity3d.com/unite/unite2016/schedule



モバイル端末向けのUnityアプリケーションの最適化実践テクニック


profiling-with-instruments

http://blogs.unity3d.com/2016/02/01/profiling-with-instruments/



Reading the PlayerLoop

Updateとか


PlayerRender

OnWillRender


UI::CanvasManager;;WillRenderCanvases 

Enlightenのメソッドもあるっぽい。



StartCoroutine使った場合、実行ブロックが2箇所に分割される

初回以降の後半はDelayedCallManager内で呼ばれる。

負荷をみるときに気をつけようねみたいな。



MemoryProfiler

見やすそう。MemoryProfiler

https://bitbucket.org/Unity-Technologies/memoryprofiler


DL -> Window -> Open MemoryProfiler Window -> start なんちゃら



メモリ、ヒープについて

GCは断続的に走ってる。

GC Alloc カラムで観れる。


anonymous methods & closuresを避ける

毎回初期化しなければいいのではっていう。


データパーシングについて

基本、textのパースに関わるものはすげー遅い。

3つの方針

1.don't parse text

bake text to bin ScriptableObject


ゲームデザインの値とか。


2.働きを小さく

チャンクに分ける

必要なとこだけパース


3.別スレッド

Pure C# types only.

Resourcesフォルダの中身は、起動時にインデックスを作っている

これは非同期にもできないし回避もできない。遅い。


Resources -> AssetBundle にすると、特にクソ遅い端末()とかでもスタートアップ時の恩恵があるっぽい。



Runtime

Propertyにセットするような値を毎フレームつくるのはやめよう。

static int とかでキャッシュ扱いにしておくと高速かつ軽量。


RegExp, StartsWith, EndsWith とかは漏れなく重い。特にReg。


::Box

String_

とかのキーワードでプロファイラで探すと見つけやすい。



Unityグラフィックス最新機能ガイド


Multithreaded Rendering

DowbleWide Rendering

2割くらい高速化できてる印象



Cinematic Image Effect

SSR

ScreenSpaceReflection



Progressive Light Mapper

GI



Unity CollaborateとUnity Cloud Buildを使って開発サイクルを高速化!

GUI上のボタンから一発でCloudに上がる。

メンバーはinviteで増やせる。


gitとかの置き換えというよりは、デザイナーさんとか、非エンジニアの人でも容易に同時編集作業ができるようなものを目指している印象。

質疑応答でもそういうはなしがめっちゃ多かった(gitとかとの互換性は?とか)


現状での作ってる人たちの理想形というかモチベーションは、

Collaborate = 「バージョン管理的な機構とは別軸」「ゲームジャムとかでの使用を念頭に置く」「別途バージョン管理をすることを念頭においていそう」という感じ。


ハードウェア性能を引き出して60fpsを実現するプログラミング・テクニック


ゲームロジックを別スレッドで実行

Vitaだと4コアあるんで、1コアを使おうみたいな。

MainThreadからデータを受け取るところとかが必要 ダブルバッファ自作

MainThreadからしか使えないAPIは!? 使わない!! なるほど!!

ダブルバッファ自作

ゲーム処理とrender処理のUpdateに分ける。


GPU

vartices直書きできる?らしい。5.4から公開されてるぽい



動的なメモリ確保をしない

struct使いまくる


パフォーマンスメータの話

vブランクの開始と終了に近い関数のコールバックを探す

PSVitaの場合、OnPreCull、OnPreCullで計測。


RenderThread, GPUは計測困難だった

今後に期待


GCのトリガになるのは?

Monoの場合は事前にAllocされてるメモリがnewでいっぱいになったら。


極限すぎるやつ

https://github.com/unity3d-jp/AnotherThread



Unity上級者を目指すなら知っておくべきデバッグテクニック集


ここでは

バグ = 思い通りに動かないこと


x 例外が出たらバグ、例外がでなければ仕様



どんどん問題の切り分けを行う

外部接続の確認 -> パラメータ -> プログラムの流れを確認する -> OSを差し替えてみる

問題を絞り込むまではログ、問題が絞り込めてからはデバッガ



映像制作のゲームチェンジャー:メイキング オブ ”THE GIFT”


いろいろてっく。Tweetひろってあとで拡充する。




ビルディング・2Dワールド in Unity ~2D機能のあれやこれや~


Tiled

タイルをならべるの、一個一個並べてると人生が終わる

タイル選択 ->  インスペクタからDraw Mode -> Tiled にして、タイル自体の横幅を変更すると、サイズに対してテクスチャで埋めてくれるようになる。


2分が2秒に。



オブジェクト内の軸のありようを変えられるようになってるぽい。

たとえば見下ろしし視点のゲーム作りたいときとかに使うといいのでは。



オリジナルタイル作成

アトラスを複数のタイルのコレクションから構築できるみたいな話かな。


アーティストもプログラマもウェルカム!新タイムラインエディタのご紹介


Sequencer

シーケンサ、アセットベースでいろいろセットしたり動かすことができるタイムラインツール。

Directorと呼ばれるAPIで操作。

ゲーム時間とかそのへんの、どの時間軸を使うのかは選べそう。

.playable拡張子でファイルとして保存される感じ。

コードからだと、Sequenceクラスのインスタンスという形で読み出したものをDirectorにセットして使う。



Cinemachine

カメラの画角とかを設定、ここで設定した内容をSequencer上にセットして、カメラの移動とかブレンディングみたいなのができるような感じ。

詳細はよくわからんかったがカメラのパンとかに関してもGUIベースで指定できそうで、ぐう有能そう。


サイトみつけた。これは、、めっちゃくちゃ期待できそうなカメラコントローラ、、!!

http://www.cinemachineimagery.com



スクラビングでスクリプトのプレビューができるのか

毎回ゼロ地点から計算すればあるいは。



APIからタイムラインを構築することは可能か

今はできないけどニーズによっては。 



AssetBundle化

まだできない。今後?



個別に質問

・コンポーザブル?入れ子にできるか?

今後できる。ただし、見づらいから推奨はしない。


・事前定義必須?

必須。アイデンティファイはAssetIdとか、Hierarchyにものが載せてある前提な気がする。


・AIみたいに使うのは想定している?

特には想定してない。スクリプトくっつけることはできるから頑張れ。


・動的に参加するものを追加できるか?あるグループにキャラを追加、みたいな

想定してない。事前に足しておこうな!

・今はframe単位でロジック動かすのをやってるけど、「この方向に向かうのをこの時間内ずっと行う」みたいなのを考えたい。とのこと。

Coroutineみたいなアイデアだな~と聞きながら思っていた。自作ツールに近そう。



見えてきたSequencerのモチベーション(作ってる側が目指してるもの)

・イベントを発効できるAfterEffects

・シーン単位とかでの使用をメインに据えてそう

・ムービー、導入モーション、特定のカメラワークとかがメインな用途な気がする。



マルチシーン編集の使い方

Hierarchy上から右クリックメニューで、個別のシーン保存したりできるようになってた。



GetRootGameObjects

GetRootGameObjectsメソッドで、特定のシーンのHierarchyのルートになっている(=Hierに列挙されている)GameObjectを取得することができる。



gameObject.scene.buildIndex

gameObject.scene.buildIndex で、そのGameObjectがどのシーン由来なのか把握することができる。


便利~~



Unityとアセットツールで学ぶ「絵づくり」の基礎(ライト、シェーダー、イメージエフェクト)


絵作りの基礎について。Look Devの話。

どのくらいのリアル感を、出てくるものすべてに対して揃えるか

その法則を作りたい。


質感 = 色、陰影、タッチ


マテリアル、ライト、カメラ

マテリアル

マップ、シェーダ


ライト

直接光、関節光、ホワイトバランス、ソフトネス


カメラ

HDR、フォーカス、スクリーンスペースでのイメージエフェクト


ライティングにおけるモチベーション

どんなストーリーを持たせるのか(状況、何が起こるかの予告になっている感じ


作為的な感じで、特に対象を明るくするとか。


スライドをもとにコーネルボックスやってみよう。

カラーブリーディング

影に壁の色とかが入り込むこと


色はライト依存

diffuseがどんな色だろうと、ライトで全部変わる。


光の加法混色



各ライトの減衰特性

DirectionalLight

減衰しない。


PointLight

リニアに減衰する


AreaLight

急激(距離に対して逆二乗)で減衰する



GIの設定

Lighting Windowでやる。

GIまわりのところがメインで、他はサブっぽい。

エミッシブを使って云々するとライトみたいな感じになるが、実際にはライトではなくエフェクトっぽい。


BakeGIのほうがモバイルに向いてる感じ。昼夜を~みたいなのは、Precompiledなやつを使うことになりそう。


シェーダ

PBRValidateっていうツールがある。


イメージエフェクト

Scriptになってる。

資料の順番にいろいろ足すといい感じ。



Unityのロードマップと来場者の皆様によるオープンディスカッション


R&Dとか、今まさに作ってそうなもののはなし。あとメインの質問コーナー


(俺)WebSocketとかをサポートする予定はありますか

ない。



(俺)WebViewって各プラットフォームに公式機能としてどうですかね

ない。



C#の7とかそのいつ対応されそうなの?みたいな話

現在のコンパイラのバグ、プロファイラ、とかをみていって、まず6に対応すると思う。その後はその後。



Webプラグイン死んだんだけど、今後ってWebGL一本なの?どの程度いけんの?

割と動くようなフェーズ。


2つ新たにサポ

simd

sharedMemBuff


おまけ

公演直前に流れてるMade with Unityな作品群の中に、初めて見るやつとかまだリリース情報出てないやつとかが結構あった気がしてる。

かっこよかったのもいっぱいあったので、どんなのがあったのか、ちまちま集めてみようかと。

https://docs.google.com/spreadsheets/d/1I8UqjLLrtq_MvlfJLiY_z0-4M7KcXygjgAB60e5W6e4/edit#gid=0

よかったら情報ちょうだいです。